<?php namespace app\wechat\controller;

use houdunwang\route\Controller;
use houdunwang\wechat\WeChat;
use system\model\Config;
use system\model\Keywords;
use system\model\Module;

/**
 * 微信通讯验证
 * Class Api
 * @package app\wechat\controller
 */
class Api extends Controller
{
    public function __construct()
    {
        //验证微信通讯,在与微信通讯验证之前，需要注意：在中间件中进行Config::set('wechat')，这一步动作
//		echo 1;
        WeChat::valid();
    }

//    public function handler(BaseContent $base)
    public function handler()
    {
        /*测试消息发送
        $model = BaseModel::find(1);
        $field = $model ? json_decode($model['base'], true) : [];*/
        $instance = WeChat::instance('message');
        //↑实例化hd微信sdk中message类
        //默认回复
        $response = Config::find(1)->response;
        //↑从Config表中获取response字段第一条（只有1条）
        $response = json_decode($response, true);
        //↑将值从json格式转为数组

        if ($instance->isSubscribeEvent()) {
            $instance->text($response['welcome']);
            //↑向用户回复消息
        }
        $content = $instance->Content;
        //↑粉丝发送来的消息
        $this->parseKeywords($content);
        //↑关键词回复
        $this->parseKeywords($response['default_message']);
        //↑获取默认回复的消息内容default_message

//        菜单的点击事件
        $button = WeChat::instance('button');
        if ($button->isClickEvent()) {
            //获取消息内容
            file_put_contents('./a.php',var_export($content));
            $this->parseKeywords($instance->EventKey);
        }

        $instance->text($response['default_message']);
        //↑去除默认消息进行恢复给用户
    }

    //系统恢复
    protected function parseKeywords($content)
    {
        $module = Keywords::where('keywords', $content)->first();
        //↑从用户发来的消息中找关键词
        if ($module) {//如果找到数据了
//            $instance->text('找到了...'. $id);//ok//测试到目前为止，微信是否正常
            //这句话的目的，希望看到当前这个模块l是不是系统模块
            $system = Module::where('module_name', $module['module'])->pluck('module_is_system');
            //↑pluck找个表中一列 module_is_system判断是否为系统模块
            //['id'=>8,'module_title'=>'微信基本功能','module_name'=>'base','module_is_system'=>1]
            $class = ($system == 1 ? 'module' : 'addons') . '\\' . $module['module'] . '\system\Processor';
            //↑通过判断结果分配不同的路径执行模块
            /*$class = new \module\base\system\Processor()
            $instance->text($class)//ok;die;//module\base\system\Processor*/
            return call_user_func_array([new $class, 'handler'], [$module['module_id']]);
            //↑从用户发来的消息中找关键词的id回调给handler函数令其执行

            //(new \module\base\system\Processor())->index();
//        p($keywords);
            //
//        if($instance->isTextMas()){
//            $instance->text($field['reset_defaults']);
//        }
//            $instance->text('您发送的消息是' . $instance->Content);
        }
    }
}